home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / ldapjdk.jar / netscape / ldap / LDAPSSLSocket.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-04-13  |  3.9 KB  |  185 lines

  1. package netscape.ldap;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.OutputStream;
  6. import java.lang.reflect.Constructor;
  7. import java.lang.reflect.Method;
  8. import java.net.InetAddress;
  9. import java.net.Socket;
  10. import java.util.Hashtable;
  11.  
  12. class LDAPSSLSocket extends Socket {
  13.    private final boolean m_debug = true;
  14.    private Object m_socket;
  15.    private Hashtable m_methodLookup = new Hashtable();
  16.    private String m_packageName;
  17.  
  18.    public LDAPSSLSocket(String var1, int var2, String var3) throws LDAPException {
  19.       this.m_packageName = var3;
  20.  
  21.       try {
  22.          Class var4 = Class.forName(this.m_packageName);
  23.          Constructor[] var5 = var4.getConstructors();
  24.  
  25.          for(int var6 = 0; var6 < var5.length; ++var6) {
  26.             Class[] var7 = var5[var6].getParameterTypes();
  27.             if (var7.length == 2 && var7[0].getName().equals("java.lang.String") && var7[1].getName().equals("int")) {
  28.                Object[] var8 = new Object[]{var1, new Integer(var2)};
  29.                this.m_socket = var5[var6].newInstance(var8);
  30.                return;
  31.             }
  32.          }
  33.  
  34.          throw new LDAPException("No appropriate constructor in " + this.m_packageName, 89);
  35.       } catch (ClassNotFoundException var9) {
  36.          throw new LDAPException("Class " + this.m_packageName + " not found", 80);
  37.       } catch (Exception var10) {
  38.          throw new LDAPException("Failed to create SSL socket", 91);
  39.       }
  40.    }
  41.  
  42.    public LDAPSSLSocket(String var1, int var2, String var3, Object var4) throws LDAPException {
  43.       this.m_packageName = var3;
  44.       String var5 = null;
  45.       if (var4 != null) {
  46.          var5 = var4.getClass().getName();
  47.       }
  48.  
  49.       try {
  50.          Class var6 = Class.forName(this.m_packageName);
  51.          Constructor[] var7 = var6.getConstructors();
  52.  
  53.          for(int var8 = 0; var8 < var7.length; ++var8) {
  54.             Class[] var9 = var7[var8].getParameterTypes();
  55.             if (var4 == null) {
  56.                throw new LDAPException("Cipher Suites is required");
  57.             }
  58.  
  59.             if (var9.length == 3 && var9[0].getName().equals("java.lang.String") && var9[1].getName().equals("int") && var9[2].getName().equals(var5)) {
  60.                Object[] var10 = new Object[]{var1, new Integer(var2), var4};
  61.                this.m_socket = var7[var8].newInstance(var10);
  62.                return;
  63.             }
  64.          }
  65.  
  66.          throw new LDAPException("No appropriate constructor in " + this.m_packageName, 89);
  67.       } catch (ClassNotFoundException var11) {
  68.          throw new LDAPException("Class " + this.m_packageName + " not found", 80);
  69.       } catch (Exception var12) {
  70.          throw new LDAPException("Failed to create SSL socket", 91);
  71.       }
  72.    }
  73.  
  74.    public InputStream getInputStream() {
  75.       try {
  76.          Object var1 = this.invokeMethod(this.m_socket, "getInputStream", (Object[])null);
  77.          return (InputStream)var1;
  78.       } catch (LDAPException var3) {
  79.          String var2 = var3.toString();
  80.          System.out.println(var2);
  81.          return null;
  82.       }
  83.    }
  84.  
  85.    public OutputStream getOutputStream() {
  86.       try {
  87.          Object var1 = this.invokeMethod(this.m_socket, "getOutputStream", (Object[])null);
  88.          return (OutputStream)var1;
  89.       } catch (LDAPException var3) {
  90.          String var2 = var3.toString();
  91.          System.out.println(var2);
  92.          return null;
  93.       }
  94.    }
  95.  
  96.    public void close() throws IOException {
  97.       try {
  98.          this.invokeMethod(this.m_socket, "close", (Object[])null);
  99.       } catch (LDAPException var3) {
  100.          String var2 = var3.toString();
  101.          System.out.println(var2);
  102.       }
  103.    }
  104.  
  105.    public void close(boolean var1) throws IOException {
  106.       try {
  107.          Object[] var2 = new Object[]{new Boolean(var1)};
  108.          this.invokeMethod(this.m_socket, "close", var2);
  109.       } catch (LDAPException var4) {
  110.          String var3 = var4.toString();
  111.          System.out.println(var3);
  112.       }
  113.    }
  114.  
  115.    public InetAddress getInetAddress() {
  116.       try {
  117.          Object var1 = this.invokeMethod(this.m_socket, "getInetAddress", (Object[])null);
  118.          return (InetAddress)var1;
  119.       } catch (LDAPException var3) {
  120.          String var2 = var3.toString();
  121.          System.out.println(var2);
  122.          return null;
  123.       }
  124.    }
  125.  
  126.    public int getLocalPort() {
  127.       try {
  128.          Object var1 = this.invokeMethod(this.m_socket, "getLocalPort", (Object[])null);
  129.          return (Integer)var1;
  130.       } catch (LDAPException var3) {
  131.          String var2 = var3.toString();
  132.          System.out.println(var2);
  133.          return -1;
  134.       }
  135.    }
  136.  
  137.    public int getPort() {
  138.       try {
  139.          Object var1 = this.invokeMethod(this.m_socket, "getPort", (Object[])null);
  140.          return (Integer)var1;
  141.       } catch (LDAPException var3) {
  142.          String var2 = var3.toString();
  143.          System.out.println(var2);
  144.          return -1;
  145.       }
  146.    }
  147.  
  148.    private Object invokeMethod(Object var1, String var2, Object[] var3) throws LDAPException {
  149.       try {
  150.          Method var4 = this.getMethod(var2);
  151.          return var4 != null ? var4.invoke(var1, var3) : null;
  152.       } catch (Exception var5) {
  153.          throw new LDAPException("Invoking " + var2 + ": " + ((Throwable)var5).toString(), 89);
  154.       }
  155.    }
  156.  
  157.    private Method getMethod(String var1) throws LDAPException {
  158.       try {
  159.          Object var2 = null;
  160.          Method var7;
  161.          if ((var7 = (Method)this.m_methodLookup.get(var1)) != null) {
  162.             return var7;
  163.          } else {
  164.             Class var3 = Class.forName(this.m_packageName);
  165.             Method[] var4 = var3.getMethods();
  166.  
  167.             for(int var5 = 0; var5 < var4.length; ++var5) {
  168.                if (var4[var5].getName().equals(var1)) {
  169.                   this.m_methodLookup.put(var1, var4[var5]);
  170.                   return var4[var5];
  171.                }
  172.             }
  173.  
  174.             throw new LDAPException("Method " + var1 + " not found in " + this.m_packageName);
  175.          }
  176.       } catch (ClassNotFoundException var6) {
  177.          throw new LDAPException("Class " + this.m_packageName + " not found");
  178.       }
  179.    }
  180.  
  181.    private void printDebug(String var1) {
  182.       System.out.println(var1);
  183.    }
  184. }
  185.